/*
 * @Author       : 刘洋 liuy5335@163.com
 * @Date         : 2024-05-17 10:32:55
 * @LastEditors: ZJP 2712104231@qq.com
 * @LastEditTime: 2025-02-21 17:10:21
 * @FilePath: \zhlx-autoform-ui\src\api\formtemplate\index.ts
 * @Description  : 表单设计器 - 表单模板相关接口
 *
 * Copyright (c) 2024 by zhlx - liuy5335@163.com, All Rights Reserved.
 */
import service from "@/utils/request"

/**
 * 获取公共模板列表
 * */
export function getFormtemplateList(type: String) {
  return service({
    url: "/formtemplate/form/baseFormTemplate/list",
    method: "get",
  })
}

/**
 *   获取表单视图
 * @param data
 * @returns
 */
export function getFormViewData(data: any) {
  return service({
      url: `/formtemplate/form/formEngineTemplate/queryFormView`,
      method: 'post',
      data: data
  })
}

export function getBusinessDetails(id: any) {
  return service({
      url: `/formtemplate/form/data/${id}`,
      method: 'get'
  })
}

/**
 * 获取表单列表头部信息
 * @param {object} data - 包含版本号、表单ID、书籍ID
 * @param {number} data.version - 版本号
 * @param {string} data.formId - 表单ID
 * @param {string} data.bookId - 书籍ID
 * @param {string} data.recordId - 表单数据记录id
 * @param {string} data.subFormId - 子表单ID
 * @returns 返回一个Promise，内包含主表和明细表全部字段信息，格式：[main: [], sub: [[], []]]
 */
export function getFormListHeader(data: {
  formId: string,
  bookId: string,
  version?: number,
  recordId?: string, 
  subFormId?: string,
}) {
  return service({
    url: "/formtemplate/noProcessLedger/fieldStruct",
    method: "get",
    params: data,
  })
}

/**
 * 导出Excel模板文件
 * @param {object} data - 包含版本号、表单ID、书籍ID和导出字段ID的对象
 * @param {number} data.version - 版本号
 * @param {string} data.formId - 表单ID
 * @param {string} data.bookId - 书籍ID
 * @param {string} data.recordId - 表单数据记录id
 * @param {string} data.subFormId - 子表单ID
 * @param {string} data.exportFiledIds - 需导出fieldId集合逗号分隔。空表示导出全部
 * @param {string} data.uniqueFiledIds - 唯一表示fieldId集合逗号分隔
 * @returns 返回一个Promise，内容为文件流
 */
export function exportExcelTemplateFile(data: {
  formId: string,
  bookId: string,
  exportFiledIds: string,
  uniqueFiledIds: string,
  version?: number,
  recordId?: string, 
  subFormId?: string, 
}) {
  return service({
    url: "/formtemplate/noProcessLedger/export",
    method: "post",
    responseType: "blob",
    params: data,
  })
}

/**
 * 导出明细表Excel模板文件
 * @param {object} data - 包含版本号、表单ID、书籍ID和导出字段ID的对象
 * @param {number} data.version - 版本号
 * @param {string} data.formId - 表单ID
 * @param {string} data.bookId - 书籍ID
 * @param {string} data.recordId - 表单数据记录id
 * @param {string} data.subFormId - 子表单ID
 * @param {string} data.exportFiledIds - 需导出fieldId集合逗号分隔。空表示导出全部
 * @param {string} data.uniqueFiledIds - 唯一表示fieldId集合逗号分隔
 * @returns 返回一个Promise，内容为文件流
 */
export function exportSubExcelTemplateFile(data: {
  formId: string,
  bookId: string,
  exportFiledIds: string,
  uniqueFiledIds: string,
  version?: number,
  recordId?: string, 
  subFormId?: string, 
}) {
  return service({
    url: "/formtemplate/noProcessLedger/subFormExport",
    method: "post",
    responseType: "blob",
    params: data,
  })
}

/**
 * 导入Excel文件
 * @param {file} file - 文件
 * @param {number} params.version - 版本号
 * @param {string} params.formId - 表单ID
 * @param {string} params.bookId - 书籍ID
 * @param {string} data.recordId - 表单数据记录id
 * @param {string} data.subFormId - 子表单ID
 * @returns 返回一个Promise，内容为表单数据
 */
export function importExcelFile(params: {
  formId: string, 
  bookId: string, 
  recordId?: string, 
  subFormId?: string, 
  version?: number
}, file: Object) {
  return service({
    url: "/formtemplate/noProcessLedger/import",
    method: "post",
    params,
    data: file,
    headers: {
      'Content-Type': 'multipart/form-data'
    }
  })
}

/**
 * 子表单导入Excel文件
 * @param {file} file - 文件
 * @param {number} params.version - 版本号
 * @param {string} params.formId - 表单ID
 * @param {string} params.bookId - 书籍ID
 * @param {string} data.recordId - 表单数据记录id
 * @param {string} data.subFormId - 子表单ID
 * @returns 返回一个Promise，内容为表单数据
 */
export function importSubExcelFile(params: {
  formId: string, 
  bookId: string, 
  recordId?: string, 
  subFormId?: string, 
  version?: number
}, file: Object) {
  return service({
    url: "/formtemplate/noProcessLedger/subImport",
    method: "post",
    params,
    data: file,
    headers: {
      'Content-Type': 'multipart/form-data'
    }
  })
}

/**
 * 批量校验和保存表单数据
 * @param data - 包含表单相关信息的对象
 * @param data.formId - 表单 ID
 * @param data.bookId - 书籍 ID
 * @param data.tableList - 表格列表字符串
 * @param data.version - 版本号（可选）
 * @param data.recordId - 记录 ID（可选）
 * @param data.subFormId - 子表单 ID（可选）
 * @returns 返回服务调用的结果
 */
export function saveFormListData(data: {
  formId: string, 
  bookId: string,  
  tableList: any[],
  version?: number,
  recordId?: string, 
  subFormId?: string, 
}) {
  return service({
    url: "/formtemplate/noProcessLedger/saveLedgerAfterCheck",
    method: "post",
    data,
  })
}


/**
 * 导出失败列表
 * @param data - 包含表单相关信息的对象
 * @param data.formId - 表单 ID
 * @param data.bookId - 书籍 ID
 * @param data.tableList - 表格列表字符串
 * @param data.version - 版本号（可选）
 * @param data.recordId - 记录 ID（可选）
 * @param data.subFormId - 子表单 ID（可选）
 * @returns 返回服务调用的结果
 */
export function errorListExport(data: {
  formId: string, 
  bookId: string,  
  tableList: any[],
  version?: number,
  recordId?: string, 
  subFormId?: string, 
}) {
  return service({
    url: "/formtemplate/noProcessLedger/errorListExport",
    method: "post",
    data,
		responseType: 'blob',
  })
}

/**
 * 批量校验和保存子表单数据
 * @param data - 包含表单相关信息的对象
 * @param data.formId - 表单 ID
 * @param data.bookId - 书籍 ID
 * @param data.tableList - 表格列表字符串
 * @param data.version - 版本号（可选）
 * @param data.recordId - 记录 ID（可选）
 * @param data.subFormId - 子表单 ID（可选）
 * @returns 返回服务调用的结果
 */
export function saveSubLedgerAfterCheck(data: {
  formId: string, 
  bookId: string,  
  tableList: any[],
  version?: number,
  recordId?: string, 
  subFormId?: string, 
}) {
  return service({
    url: "/formtemplate/noProcessLedger/saveSubLedgerAfterCheck",
    method: "post",
    data,
  })
}

/**
 * 下载子表失败记录
 * @param data - 包含表单相关信息的对象
 * @param data.formId - 表单 ID
 * @param data.bookId - 书籍 ID
 * @param data.errorList - 表格列表
 * @param data.version - 版本号（可选）
 * @param data.recordId - 记录 ID（可选）
 * @param data.subFormId - 子表单 ID（可选）
 * @returns 返回服务调用的结果
 */
export function subErrorListExport(data: {
  formId: string, 
  bookId: string,  
  errorList: any[],
  version?: number,
  recordId?: string, 
  subFormId?: string, 
}) {
  return service({
    url: "/formtemplate/noProcessLedger/subErrorListExport",
    method: "post",
    data,
		responseType: 'blob',
  })
}